package les

class SendController {

	def index = { }

	def enviar_email = {
		if (!session.usuarioLogado) {
			redirect(uri: '/usuario/login.gsp')
			return
		}
		if (session.usuarioLogado?.tipo != 'Jota') {
			redirect(uri: '/index.gsp')
			return
		}
		
		Usuario user = Usuario.findByEmail(params.email);
		if(user == null){
			render "<h3>Você não possui conta no sistema"
			return
		}
		try {
			sendMail {
				to params.email
				from "encontrosejc@gmail.com"
				subject "Lembrete de senha"
				body """Se você realmente esqueceu sua senha clique no link abaixo
				
				http://localhost:8080/LES/usuario/show/${user.id}
				"""
			}
			redirect(action:"confirmarEnvio")
		} catch (Exception e) {
			redirect(action:"exibirErro")
		}
	}

	def selecionarEmails = {
		if (!session.usuarioLogado) {
			redirect(uri: '/usuario/login.gsp')
			return
		}
		if (session.usuarioLogado?.tipo != 'Jota') {
			redirect(uri: '/index.gsp')
			return
		}
		
		def usuarioInstance = Usuario.get(session.usuarioLogado.id)
		return [usuarioInstance : usuarioInstance]
	}


	def procurarIntegrante = {
		def integrantes = Integrante.findAllByNomeLike("%${params.query}%")

		//Create XML response
		render(contentType: "text/xml") {
			results() {
				integrantes.each { integrante ->
					result(){
						name(integrante.nome)
						id(integrante.id)
						//Optional id which will be available in onItemSelect
					}
				}
			}
		}
	}

	def adicionarIntegrante = {
		if (!session.usuarioLogado) {
			redirect(uri: '/usuario/login.gsp')
			return
		}
		if (session.usuarioLogado?.tipo != 'Jota') {
			redirect(uri: '/index.gsp')
			return
		}
		
		def usuarioInstance = Usuario.get(session.usuarioLogado.id)
		def integranteInstance = Integrante.findByNome(params.integrante)
		if(integranteInstance.email == null)
			flash.message = "Este integrante não possui email cadastrado"
		else if(usuarioInstance.malaDireta.contains(integranteInstance.email)){
			flash.message = "Este integrante já esta contido na mala direta"
		}else{
			usuarioInstance.malaDireta.add(integranteInstance.email)
		}
		redirect(action: "selecionarEmails")
	}

	//Remove o email da mala direta.
	def removerEmail = {
		if (!session.usuarioLogado) {
			redirect(uri: '/usuario/login.gsp')
			return
		}
		if (session.usuarioLogado?.tipo != 'Jota') {
			redirect(uri: '/index.gsp')
			return
		}
		
		def usuarioInstance = Usuario.get(session.usuarioLogado.id)
		usuarioInstance.malaDireta.remove(params.email)
		flash.message = "O email não pertence mais à mala direta"
		redirect(action : "selecionarEmails")
	}

	def criarMala = {
	}

	def enviarMala = {
		if (!session.usuarioLogado) {
			redirect(uri: '/usuario/login.gsp')
			return
		}
		if (session.usuarioLogado?.tipo != 'Jota') {
			redirect(uri: '/index.gsp')
			return
		}
		
		def usuarioInstance = Usuario.get(session.usuarioLogado.id)
		String emailRemetente = usuarioInstance.email
		String assunto = params.assunto
		String mensagem = params.mensagem
		usuarioInstance.malaDireta.each {email ->
			enviarEmail emailRemetente, email, assunto, mensagem
		}
	}

	public void enviarEmail (String remetente, String destinatario, String assunto, String mensagem) {
		try {
			sendMail {
				to destinatario
				from remetente
				subject assunto
				body "Rementente: ${remetente} \n \n ${mensagem}"
			}
			redirect(action:"confirmarEnvio")
		} catch (Exception e) {
			redirect(action:"exibirErro")
		}
	}


	def exibirErro = { return }

	def confirmarEnvio = { return }
}